-- vim:set ft=lua: dofile(mg.script_name:gsub('[^\\/]*$','')..'util.lua') --tkntrec=tonumber(edcb.GetPrivateProfile('SET','tkntrec',false,ini))~=0 Roboto=tonumber(edcb.GetPrivateProfile('SET','Roboto',false,ini))~=0 subGenreoption=edcb.GetPrivateProfile('SET','subGenreoption','ALL',ini) FIND_BY_OPEN=tonumber(edcb.GetPrivateProfile('SET','FIND_BY_OPEN',false,ini))~=0 PAGE_COUNT=tonumber(edcb.GetPrivateProfile('SET','PAGE_COUNT','30',ini)) oneseg=tonumber(edcb.GetPrivateProfile('GUIDE','oneseg',false,ini))~=0 hover=tonumber(edcb.GetPrivateProfile('GUIDE','hover',false,ini))~=0 titleControl=tonumber(edcb.GetPrivateProfile('GUIDE','titleControl',1+4+2+32,ini)) ONE_MIN_PX=edcb.GetPrivateProfile('GUIDE','ONE_MIN_PX','4',ini) MARGIN_HOUR=edcb.GetPrivateProfile('GUIDE','MARGIN_HOUR','1',ini) MARGIN_MIN=edcb.GetPrivateProfile('GUIDE','MARGIN_MIN','30',ini) w_service=edcb.GetPrivateProfile('GUIDE','service','210',ini) w_service_sp=edcb.GetPrivateProfile('GUIDE','service_sp','125',ini) w_hour=edcb.GetPrivateProfile('GUIDE','hour','22',ini) w_hour_sp=edcb.GetPrivateProfile('GUIDE','hour_sp','16',ini) CH_COUNT=tonumber(edcb.GetPrivateProfile('GUIDE','CH_COUNT','0',ini)) subChConcat=tonumber(edcb.GetPrivateProfile('GUIDE','subChConcat',true,ini))~=0 background=edcb.GetPrivateProfile('BACKGROUND','background','#EEEEEE',ini) news=edcb.GetPrivateProfile('BACKGROUND','news','#B3E5FC',ini) sports=edcb.GetPrivateProfile('BACKGROUND','sports','#FFF9C4',ini) information=edcb.GetPrivateProfile('BACKGROUND','information','#BBDEFB',ini) drama=edcb.GetPrivateProfile('BACKGROUND','drama','#FFCDD2',ini) music=edcb.GetPrivateProfile('BACKGROUND','music','#FFECB3',ini) variety=edcb.GetPrivateProfile('BACKGROUND','variety','#E1BEE7',ini) movie=edcb.GetPrivateProfile('BACKGROUND','movie','#FFE0B2',ini) anime=edcb.GetPrivateProfile('BACKGROUND','anime','#F8BBD0',ini) documentary=edcb.GetPrivateProfile('BACKGROUND','documentary','#C5CAE9',ini) theater=edcb.GetPrivateProfile('BACKGROUND','theater','#DCEDC8',ini) education=edcb.GetPrivateProfile('BACKGROUND','education','#C8E6C9',ini) welfare=edcb.GetPrivateProfile('BACKGROUND','welfare','#B2DFDB',ini) extension=edcb.GetPrivateProfile('BACKGROUND','extension','#FFFFFF',ini) other=edcb.GetPrivateProfile('BACKGROUND','other','#F5F5F5',ini) none=edcb.GetPrivateProfile('BACKGROUND','none','#E0E0E0',ini) nothing=edcb.GetPrivateProfile('BACKGROUND','nothing','#9E9E9E',ini) paint=tonumber(edcb.GetPrivateProfile('BACKGROUND','paint',false,ini))~=0 reserve=edcb.GetPrivateProfile('BACKGROUND','reserved','#FF3D00',ini) disabled=edcb.GetPrivateProfile('BACKGROUND','disable','#757575',ini) partially=edcb.GetPrivateProfile('BACKGROUND','partially','#FFFF00',ini) partially_border=edcb.GetPrivateProfile('BACKGROUND','partially_border','#FF3D00',ini) shortage=edcb.GetPrivateProfile('BACKGROUND','shortage','#FF5252',ini) shortage_border=edcb.GetPrivateProfile('BACKGROUND','shortage_border','#FFEA00',ini) CATEGORY={ 'news', 'sports', 'information', 'drama', 'music', 'variety', 'movie', 'anime', 'documentary', 'theater', 'education', 'welfare', } ct={title='設定'} ct.css='
\n' ct.js='
\n' ..'
\n' ..'
\n' ct.tab='全般\n' ..'番組表\n' ..'並び替え\n' ct.dialog={{id='dialog',button='
\n'}} GetChDataList={} for i,v in ipairs(edcb.GetChDataList()) do GetChDataList[v.onid..'-'..v.tsid..'-'..v.sid]=true end edcb.htmlEscape=15 HIDE_SERVICES={} for i=0,1000 do v=edcb.GetPrivateProfile('HIDE','hide'..i,false,ini) if key=='0' then break end HIDE_SERVICES[''..v]=true end a=edcb.GetServiceList() or {} ServiceList={} if edcb.GetPrivateProfile('SORT','sort0',false,ini)~='0' then GetServiceList={} for i,v in ipairs(a) do GetServiceList[v.onid..'-'..v.tsid..'-'..v.sid]=v end for i=0,1000 do key=edcb.GetPrivateProfile('SORT','sort'..i,false,ini) if key=='0' then break end v=GetServiceList[key] if v and GetChDataList[key] then v.hide=HIDE_SERVICES[key] table.insert(ServiceList, v) else --TSID変更検出 for j,w in pairs(GetServiceList) do change=key:match(w.onid..'-(%d+)-'..w.sid..'$') if change and tonumber(change)~=w.tsid and GetChDataList[w.onid..'-'..w.tsid..'-'..w.sid] then w.change=change w.hide=HIDE_SERVICES[key] table.insert(ServiceList, w) GetServiceList[w.onid..'-'..w.tsid..'-'..w.sid]=nil break end end end GetServiceList[key]=nil end for i,v in ipairs(a) do if GetServiceList[v.onid..'-'..v.tsid..'-'..v.sid] then table.insert(ServiceList, v) end end else ServiceList=a table.sort(ServiceList, function(a,b) return ('%04X%04X'):format(a.remote_control_key_id, a.sid)< ('%04X%04X'):format(b.remote_control_key_id, b.sid) end) end ct.main='
\n
\n
\n' ..'\n' ..'\n' ..'
\n' --[=[ ..'
\n
tkntrec氏版
\n
\n' ..'
\n' ..'オフで使用するとオリジナル設定がデフォルトに変更されます
\n' --]=] ..'
\n
サイドパネル
\n
\n' ..'
\n' ..'番組詳細等をサイドパネルで表示します
\n' ..'
\n
Webフォント "Roboto"
\n' ..'
\n' ..'Material Design推奨フォント
\n' ..'
\n
名前付きパイプを推測して開く
\n' ..'
\n' ..'一部の環境でリモート視聴が動作しない場合にオンにしてください
\n' ..'
\n
一覧表示数
\n
\n' ..'
Input is not a number!
\n' ..'0で無制限
\n' ..'
\n
サブジャンル表示
\n
\n' ..'
表示する
\n' ..'
EPG予約のみ
\n' ..'
表示しない
\n' ..'
\n' ..'
\n
ストレージ
' ..'
\n' list={} n=tonumber(edcb.GetPrivateProfile('SET','RecFolderNum',0,'Common.ini')) if n<=0 then --録画保存フォルダが未設定のときは設定関係保存フォルダになる list[1]=edcb.GetPrivateProfile('SET','DataSavePath','','Common.ini') if list[1]=='' then list[1]=edcb.GetPrivateProfile('SET','ModulePath','','Common.ini')..'\\Setting' end end for i=0,n-1 do list[#list+1]=edcb.GetPrivateProfile('SET','RecFolderPath'..i,'','Common.ini') end checked={} for i,v in ipairs(list) do v=v:match('^%a:\\') if v and not checked[v:upper()] then checked[v:upper()]=true free=nil f=edcb.io.popen('fsutil volume diskfree '..v) if f then free,total,avail=f:read('*a'):gsub("[%s',.]",''):match(':(%d+).*:(%d+).*:(%d+)') f:close() end ct.main=ct.main..'
storage\n' ..'
'..v..'
' ..(free and ('%.3f GiB / %.3f GiB'):format(free/1024/1024/1024,total/1024/1024/1024) or '不明')..'
\n' ..'
\n' end end ct.main=ct.main..'
\n' ..'
\n' ..'
\n' ..'
\n
ワンセグ
\n
\n' ..'
\n' ..'
\n
マウスホバー
\n
\n' ..'
\n' ..'ポップアップをマウスホバーで表示
\n' ..'
\n
サブチャンネル結合
\n
\n' ..'
\n' ..'CSでは無効
\n' ..'
\n
番組名の制御
\n
\n' ..'
PC：
追従
\n' ..'
JavaScriptで
\n' ..'
CSSで
\n' ..'
スマホ：
追従
\n' ..'
JavaScriptで
\n' ..'
CSSで
\n' ..'
\n' ..'
チャンネル数
\n
\n' ..'
Input is not a number!
\n' ..'0で無制限
\n' ..'
\n
1分の高さ
\n
\n' ..'
1以上で入力してください
px
\n' ..'
\n
基準時間
\n
\n' ..'
0～23の間で入力してください
時間前
\n' ..'
\n
現在時刻の位置
\n
\n' ..'
0以上で入力してください
分
\n' ..'スクロールする位置をずらします
\n' ..'
\n
チャンネルの幅
\n
\n' ..'
\n
\n
PC 10以上で入力してください
px
\n' ..'
\n
\n
スマホ 10以上で入力してください
px
\n' ..'
\n
時間帯の幅
\n
' ..'
\n
\n
PC 10以上で入力してください
px
\n' ..'
\n
\n
スマホ 10以上で入力してください
px
\n' ct.main=ct.main..'
\n
背景色
\n
\n
\n' ..'
\n' ..'
\n
ジャンル別背景色
\n
\n' ..'
ニュース/報道
\n' ..'
\n' ..'
スポーツ
\n' ..'
\n' ..'
情報/ワイドショー
\n' ..'
\n' ..'
ドラマ
\n' ..'
\n' ..'
音楽
\n' ..'
\n' ..'
バラエティ
\n' ..'
\n' ..'
映画
\n' ..'
\n' ..'
アニメ/特撮
\n' ..'
\n' ..'
ドキュメンタリー/教養
\n' ..'
\n' ..'
劇場/公演
\n' ..'
\n' ..'
趣味/教育
\n' ..'
\n' ..'
福祉
\n' ..'
\n' ..'
拡張
\n' ..'
\n' ..'
その他
\n' ..'
\n' ..'
無指定
\n' ..'
\n' ..'
EPGなし
\n' ..'
\n' ..'
\n' ..'
\n
録画予約済
\n
\n' ..'
\n' ..'
予約済み
\n
' ..'
\n' ..'
予約無効
\n
' ..'
\n' ..'
塗りつぶし
\n' ..'
\n' ..'
一部録画
\n
' ..'
枠
\n' ..'
チューナー不足
\n
' ..'
枠
\n' ..'
\n' ..'
\n' ..'
\n' ..'
\n' ..'
\n' NetworkList={} for i,v in ipairs(NetworkIndex()) do NetworkList[i]={} end for i,v in ipairs(ServiceList) do if GetChDataList[''..v.onid..'-'..v.tsid..'-'..v.sid] and (v.partialReceptionFlag or v.service_type==0x01 or v.service_type==0x02 or v.service_type==0xA5 or v.service_type==0xAD) then table.insert(NetworkList[NetworkIndex(v)], '
- ' ..'drag_handle' ..'' ..''..v.service_name..'' ..''..v.sid..(v.change and ' ※TSID変更を検出 '..v.change..'→'..v.tsid..'' or '')..'' -- SID表示サブチャネル判別用 ..'' ..'' ..'' ..'\n' ..'' ..'
\n' ) end end ctt={} for i,v in ipairs(NetworkList) do if #v>0 then ct.main=ct.main..''..NetworkIndex()[i]..'\n' table.insert(ctt, '

\n'..table.concat(v)..'

\n') end end ct.main=ct.main..'
\n'..table.concat(ctt)..[=[
]=] ct=template(ct) mg.write(ct:Pop(Response(200,'text/html','utf-8',ct.len)..(ct.gzip and 'Content-Encoding: gzip\r\n' or '')..'\r\n'))